package com.xx.ch05.demo.demo09;

import com.xx.ch05.demo.demo07.Paper;

/**
 * @author 许欣
 * 时间：2022/4/11 15:25
 * 描述：
 */
public class TextPaper implements Paper {
    private int charPerLine=16;//每行字符数
    private int linePerPage=15;//每页行数
    private String context="";//纸张中内容
    private int posX=0;//当前横向位置，从0到charPerLine-1
    private int posY=0;//当前行数，从0到linePerPage-1
    private int posP=1;//当前页数
    @Override
    public void putInChar(char c) {
        context+=c;
        ++posX;
        //判断是否换行
        if (posX==charPerLine){
            context+=Paper.newline;
            posX=0;
            ++posY;
        }
        //判断是否翻页
        if (posY==linePerPage){
            context+="==第"+posP+"页==";
            context+=Paper.newline+Paper.newline;
            posY=0;
            ++posP;
        }
    }
    //使用set方法注入每行字符数
    public void setCharPerLine(int charPerLine){
        this.charPerLine=charPerLine;
    }
    //使用set方法注入每行数
    public void setLinePerPage(int linePerPage){
        this.linePerPage=linePerPage;
    }

    @Override
    public String getContent() {
        String ret=this.context;
        //补齐本页空行，并显示页码
        if (!(posX==0&&posY==0)){
            int count=linePerPage-posY;
            for (int i=0;i<count;++i){
                ret+=Paper.newline;
            }
            ret+="==第"+posP+"页==";
        }
        return ret;
    }
}
